package com.roc.consumer;

import com.roc.common.dto.User;
import com.roc.common.service.UserService;
import com.roc.demo.proxy.ServiceProxyFactory;
import lombok.extern.slf4j.Slf4j;

import static java.lang.Thread.sleep;

/**
 * 简易服务消费者示例
 */
@Slf4j
public class EasyConsumerExample {

    public static void main(String[] args) throws InterruptedException {
        /**
         * 静态代理
         * UserService userService = new UserServiceProxy();
         */
        //测试消费者本地缓存机制，使用for循环调用。
        // 第一次从注册中心获取服务信息，第二次从缓存中获取，然后在消费者睡眠期间停掉提供者，第三次显示暂无服务地址报错
        for (int i = 0; i < 3; i++){
            //动态代理
            UserService userService = ServiceProxyFactory.getProxy(UserService.class);
            User user = new User();
            user.setName("roc");
            //调用
            User newUser = userService.getUser(user);
            if (newUser != null){
                System.out.println(newUser.getName());
            }else {
                System.out.println("user == null");
            }
            if (i == 1){
                sleep(20000);
                log.info("消费者睡眠20秒");
            }
            sleep(5000);
        }
    }
}
